
import logging
import os

from PySide6.QtCore import Qt, QObject
from PySide6.QtWidgets import QDockWidget

from 程序核心代码.mvvm重构.基础定义.节点管理器.容器节点图形项管理器 import 容器节点图形项管理器
from 程序核心代码.mvvm重构.基础定义.节点管理器.节点模型管理器 import 节点模型管理器
from 程序核心代码.mvvm重构.基础定义.辅助功能.py文件解析工具 import py文件解析
from 程序核心代码.图形界面.窗口及画布场景.显示场景的窗口 import 场景显示窗口定义
from 程序核心代码.图形界面.窗口及画布场景.画布场景 import 画布场景定义

# 配置日志记录器
logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(levelname)s - %(message)s')
日志记录器 = logging.getLogger(__name__)

class 文件打开操作(QObject):
    """用于处理文件打开操作的类"""

    def __init__(self, 主窗口):
        super().__init__()
        self.主窗口 = 主窗口
        self.调试模式 = False  # 是否开启调试模式

        # 设置日志等级
        if self.调试模式:
            日志记录器.setLevel(logging.DEBUG)
            日志记录器.debug(f"{self.__class__.__name__}调试模式已开启")
        else:
            日志记录器.setLevel(logging.ERROR)  # 只显示警告及以上级别的日志

    def 打开文件(self, 文件绝对路径):
        """打开文件并显示在场景中"""
        日志记录器.info("正在尝试打开文件: %s", 文件绝对路径)
        场景 = 画布场景定义()
        新场景显示窗口 = 场景显示窗口定义(场景)

        # 使用DockWidget来显示新的窗口而不替换中央组件
        文件名 = os.path.basename(文件绝对路径)
        新的Dock窗口 = QDockWidget(f"文件: {文件名}", self.主窗口)
        新的Dock窗口.setWidget(新场景显示窗口)
        self.主窗口.addDockWidget(Qt.RightDockWidgetArea, 新的Dock窗口)
        日志记录器.info("开始解析文件: %s", 文件名)
        self.文件解析器 = py文件解析(文件绝对路径)
        self.ast结构树 = self.文件解析器.ast结构树
        # 文件容器ast节点基础模型(文件绝对路径)
        文件节点模型管理器 = 节点模型管理器(ast节点=self.ast结构树, 文件名=self.文件解析器.文件名)

        文件图形项管理器 = 容器节点图形项管理器(节点模型管理器=文件节点模型管理器, 场景=场景)
        #文件节点模型管理器.开始解析节点模型()
        日志记录器.info("文件解析完成: %s", 文件名)
        # 发射信号，通知文件已成功打开
        # 起始接口.文件打开成功.emit(文件名)
